'''
用面向对象的方式，去模仿一个士兵使用枪去射击的过程

士兵 ： 属性：名字，枪
       射击：
枪 ：  属性 名字，子弹的数量
        方法：装填子弹  ，击发
'''
class Solder:
    '''
    士兵的类
    '''
    def __init__(self,name):
        self.name = name
        self.gun = None

    def __get_gun(self,gun):
        # gun是枪类实例化的一个对象
        self.gun  = gun
    def shooting(self,gun,num):
        '''
        射击的方法
        :return:
        '''
        #判断一下是否有枪，
        while True:
            if self.gun == None:
                print('还没有枪')
                self.__get_gun(gun)
                print(f'得到了一把{gun}')
                # 再判断是否有子弹
            elif gun.bullets_count == 0:
                gun.add_bullet(num)
            # 就可以去射击了
            else:
                print('瞄准一个敌人')
                gun.fire()
                break



class Gun:
    def __init__(self,name):
        '''
        :param name: 枪的名字
        :param : bullets_count： 子弹的数量
        '''
        self.name = name
        self.bullets_count = 0
    def add_bullet(self,num): #装填字典
        self.bullets_count += num
        print(f'咔咔，{num}发子弹被装填到枪里')

    def fire(self):
        self.bullets_count -= 1
        print('呯~~',self.bullets_count)
    def __str__(self):
        return f'{self.name}'
xsd= Solder('许三多')
jjq = Gun('98K')
# xsd.get_gun(jjq)
xsd.shooting(jjq,10)
xsd.shooting(jjq,10)
xsd.shooting(jjq,10)
xsd.shooting(jjq,10)